package org.deng.learn.designpattern.abstractfactory;

/**
 * @author DengLibin
 * @Description 抽象工厂模式
 * 工厂模式是用来创建同一个产品的不同类型的，但是抽象工厂模式是用来创建不同类的产品
 * 一般来说，产品种类单一，适合用工厂模式；如果有多个种类，各种类型时，通过抽象工厂模式来进行创建是很合适的。
 * 何时使用：系统的产品有多于一个的产品族，而系统只消费其中某一族的产品

 * @Date 2019/2/12 0012 14:29
 */
public class Main {

    public  static  void main(String[] args){
        AbstractFactory factory = FactoryProvider.getFactory(FactoryType.COLOR_FACTORY); //颜色产品族
        Color color = factory.getColor(ColorName.BLUE);
        color.showColor();

        factory = FactoryProvider.getFactory(FactoryType.SHAPE_FACTORY); //形状产品族
        Shape shape = factory.getShape(ShapeName.RECTANGLE);
        shape.showShape();

    }
}
